function curry(fn, ...args) {
    if(fn.length === args.length) {
        return fn(...args)
    }
    // 如果一开始参数就符合，直接返回结果，否则返回一个待执行的函数
    return function _curry(...params) {
        // 闭包变量不是全局作用域的变量，
        args.push(...params)
        // fn.length闭包变量一定是外层函数的内部变量（fn不属于内层变量，是外部传入的）
        if(fn.length == args.length) {
            return fn(...args)
        } else {
            return _curry
        }
    }
}